package logger

// logLevel 表示日志等级。
type logLevel = int64

const (
	LogLevelDefualt logLevel = -1 // 未设置
	LogLevelFatal   logLevel = 0  // 致命等级(输出致命日志)一般是未知错误,发生了里发报警
	LogLevelError   logLevel = 1  // 错误等级(输出错误日志)一般是已知错误,发生了需要处理
	LogLevelWarn    logLevel = 2  // 警告等级一般是配置表有错,但不影响正常运行等
	LogLevelInfo    logLevel = 3  // 信息等级上线后正常需要看到的日志,报告状态等
	LogLevelDebug   logLevel = 4  // 调试等级上线后不需要看到的日志,调试用,可以使用Key来临时开关的日志
)

// LogKeyEnum 表示日志Key的类型。
type LogKeyEnum = string

const (
	//缺省调试日志
	LogKey_Default LogKeyEnum = "Default"
	//Entity有关的调试信息
	LogKey_Entity LogKeyEnum = "Entity"
	// Entity消息发给链接有关
	LogKey_EntitySess LogKeyEnum = "EntitySess"
	//Mysql有关日志
	LogKey_Mysql LogKeyEnum = "Mysql"
	//redis有关日志
	LogKey_Redis LogKeyEnum = "Redis"
	//Gin内日志
	LogKey_GinHttp LogKeyEnum = "Gin"
	//寻路系统日志
	LogKey_PathFinder LogKeyEnum = "PathFinder"
	// 对C++内存的管理
	LogKey_Lib LogKeyEnum = "Lib"
	//移动
	LogKey_MoveSys LogKeyEnum = "MoveSys"
	//消息处理接口相关日志
	LogKey_Msg LogKeyEnum = "Msg"
	// 注册 消息有关
	LogKey_RegMsgProc LogKeyEnum = "RegMsgProc"
	// Kafka 日志
	LogKey_LogKafka LogKeyEnum = "Kafka"
	// 	etcd 日志
	LogKey_Etcd LogKeyEnum = "Etcd"
	// dbmanager 日志
	LogKey_DB LogKeyEnum = "DB"
)

func init() {
	RegisterLogKey(LogKey_Default, "缺省调试日志")
	RegisterLogKey(LogKey_Entity, "Entity有关的调试信息")
	RegisterLogKey(LogKey_EntitySess, "Entity消息发给链接有关")
	RegisterLogKey(LogKey_Mysql, "Mysql有关日志")
	RegisterLogKey(LogKey_Redis, "redis有关日志")
	RegisterLogKey(LogKey_GinHttp, "Gin内日志")
	RegisterLogKey(LogKey_PathFinder, "寻路系统日志")
	RegisterLogKey(LogKey_Lib, "对C++ 内存的管理")
	RegisterLogKey(LogKey_MoveSys, "移动")
	RegisterLogKey(LogKey_Msg, "消息处理接口相关日志")
	RegisterLogKey(LogKey_RegMsgProc, "注册 消息有关")
	RegisterLogKey(LogKey_LogKafka, "Kafka 日志")
	RegisterLogKey(LogKey_Etcd, "etcd 日志")
	RegisterLogKey(LogKey_DB, "dbmanager 日志")
}

var (
	// 日志Debug等级的Key和说明
	_LogKeyMap map[LogKeyEnum]string
)

// RegisterLogKey 注册日志Key和说明。
// 参数:
//   key: 日志Key。
//   desc: 日志Key的说明。
func RegisterLogKey(key LogKeyEnum, desc string) {
	if _LogKeyMap == nil {
		_LogKeyMap = make(map[LogKeyEnum]string)
	}
	_LogKeyMap[key] = desc
}
